package nextel.ruta.mvc;

import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.OScrollListWrap;
import nextel.Configuracion;
import nextel.ruta.ControlRuta;
import nextel.ruta.bean.RutaBean;
import nextel.usuario.ControlUsuario;
import nextel.util.mvc.BuscarListener;
import nextel.visita.ControlVisita;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;

import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;

/**
 *
 *
 */
public class MVCRutaResultadoRuta extends MVCAction implements BuscarListener, OListenerKey {// implements ItemStateListener  {
    
    private OSoftKey cmdSigue, cmdAtras, cmdBusqueda;
    private List lstObject;
    private OScrollListWrap lstMenu;
    private List listaDatos ;
    boolean primeraVez = true;
    private boolean flagDobleClick;
    private boolean finalizoBusqueda;
    
    protected void destroy() {
        super.destroy();
        if (lstObject != null) {
            lstObject.clear();
            lstObject = null;
        }
        if (listaDatos != null) {
            listaDatos.clear();
            listaDatos = null;
        }
        
        lstMenu = null;
    }
    
    protected void createView() {
        
        cmdSigue = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SEGUIR));
        cmdAtras = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ATRAS));
        cmdBusqueda = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_BUSCAR));
        
        formulario.setTitle(" ... ... ", OUILook.PLAIN_SMALL_TITLE);
        
        formulario.addSoftKey(cmdSigue);
        formulario.addSoftKey(cmdAtras);
        formulario.addSoftKey(cmdBusqueda);
        
    }
    
    protected void createItems() {
//        System.out.println("createItems");
        primeraVez = true;
        flagDobleClick = true;
//        listaDatos.clear();
        listaDatos = new ArrayList();
        finalizoBusqueda = false;
        
        if (lstObject == null) {
            lstObject = new ArrayList();
        }
        
        formulario.setTitle(" ... ... ", OUILook.PLAIN_SMALL_TITLE);
        
        lstMenu = new OScrollListWrap(formulario.getWidth(), formulario.getBodyHeight(),
                OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
        
        lstMenu.setModeWrap(true);
        lstMenu.isWithBorder = false;
        lstMenu.listenerKey = this;
        
        formulario.add(lstMenu);
        
    }
    
    public void performAction(OSoftKey c) {
        if (flagDobleClick) {
            
            if (c == cmdSigue) {
                
                if (lstObject.size() > 0 && lstMenu.getSelectedIndex() >= 0) {
                    finalizoBusqueda = true;
                    flagDobleClick = false;
                    ControlRuta.getInstance().currentRuta  = (RutaBean) lstObject.get(lstMenu.getSelectedIndex( ));
                    ControlVisita.getInstance().currentEstado = ControlRuta.getInstance().currentRuta.getEstadoActualSiguiente();
                    
                    destroy();
                    if(ControlVisita.getInstance().currentEstado != null){
                        ControlRuta.getInstance().setCurrent(ControlRuta.getInstance().mvcRutaDetalle);
                    }else{
                        ControlRuta.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ACTIVIDAD_COMPLETA), ControlRuta.getInstance().mvcRutaBusqueda.showScreen());
                    }
                }
                
            } else if (c == cmdAtras) {
                flagDobleClick = false;
                finalizoBusqueda = true;
                destroy();
                ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcMenu);
                
            } else if (c == cmdBusqueda) {
                flagDobleClick = false;
                finalizoBusqueda = true;
                destroy();
                ControlRuta.getInstance().setCurrent(ControlRuta.getInstance().mvcRutaBusqueda);
            }
        }
    }
    
    public void performKey(int indx) {
        
        if (flagDobleClick) {
            
            if (indx == Key.Key_OK ) {
                if (lstObject.size() > 0 && lstMenu.getSelectedIndex() >= 0) {
                    finalizoBusqueda = true;
                    flagDobleClick = false;
                    ControlRuta.getInstance().currentRuta = (RutaBean) lstObject.get(lstMenu.getSelectedIndex());
                    ControlVisita.getInstance().currentEstado = ControlRuta.getInstance().currentRuta.getEstadoActualSiguiente();
                    
                    destroy();
                    if(ControlVisita.getInstance().currentEstado != null){
                        ControlRuta.getInstance().setCurrent(ControlRuta.getInstance().mvcRutaDetalle);
                    }else{
                        ControlRuta.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ACTIVIDAD_COMPLETA), ControlRuta.getInstance().mvcRutaBusqueda.showScreen());
                    }
                }
            }
            
        }
    }
    
    public void agregarElementosVectorDatos(List lista) {
        
        if (!finalizoBusqueda) { // si no finaliza la busqueda o se interrumpe
            
            RutaBean ruta ;
            
            for (int i = 0; i < lista.size(); i++) {
                ruta  = (RutaBean) lista.get(i);
                listaDatos.add(ruta.getCampoMostrar());
                lstObject.add(ruta );
            }
            
            if (primeraVez) {
                
                lstMenu.populate(listaDatos);
                formulario.repaint();
                primeraVez = false;
            }
            
            if (lista != null) {
                lista.clear();
            }
            
            lista = null;
            ruta = null;
            
        }
    }
    
    public void finalizo() {
        
        finalizoBusqueda = false;
        
        if (formulario != null ) {
            
            int cantidad = lstObject != null? lstObject.size(): 0;
            
            formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_RUTA) + " #" +  cantidad, OUILook.PLAIN_SMALL_TITLE);
            
            lstMenu.recalcular();
            
            formulario.repaint();
            
        }
    }
    
    public boolean esFinalizadaBusqueda() {
        return finalizoBusqueda;
    }
}
